﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Linq;

namespace INHOADON_TAMVAN.Chuc_Nang
{
    public partial class frmSanPham : DevExpress.XtraEditors.XtraForm
    {
        bool save = false;
        DataClasses1DataContext db = new DataClasses1DataContext(SystemInfo.pub_ConnString);
        public frmSanPham()
        {
            InitializeComponent();
        }

        private void gvSanPham_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
        {
            if (e.Column.FieldName == "")
            {
                if (e.RowHandle >= 0)
                {
                    e.DisplayText = (e.RowHandle + 1).ToString();
                }
            }
        }

        private void gvSanPham_RowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e)
        {
            save = false;
            this.Text += "*";
        }

        private void btnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            this.saveSanPham();
        }

        private void frmSanPham_Load(object sender, EventArgs e)
        {
            this.load();
        }


        private void load()
        {
            db = new DataClasses1DataContext(SystemInfo.pub_ConnString);
            gcSanPham.DataSource = db.HangHoas;
        }
        private void btnClose_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (save == false)
            {
                DialogResult result = XtraMessageBox.Show("Bạn chưa lưu sản phẩm! Bạn có muốn lưu sản phẩm không?", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                if (result == DialogResult.OK)
                {
                    this.saveSanPham();
                    this.Close();
                }
                else if (result == DialogResult.Cancel)
                {
                    this.Close();
                }
            }
        }

        private void saveSanPham()
        {
            try
            {
                this.Text = this.Text.Substring(0, this.Text.Length - 1);
                db.SubmitChanges();
                save = true;
                XtraMessageBox.Show("Thêm sản phẩm thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show("Đã có lỗi khi thêm hàng hóa xin vui lòng kiểm tra lại!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btnDel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (gvSanPham.RowCount == 0)
            {
                XtraMessageBox.Show("Vui lòng chọn 1 một hàng hóa trong danh sách!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                //vị trí chọn trên grid
                int rowHandles = gvSanPham.FocusedRowHandle;

                if (rowHandles >= 0)
                {
                    //check xem co khoa trung hay khong
                    string id = gvSanPham.GetFocusedRowCellValue(colHH_ID).ToString();
                    var checkCTHD = (from ct in db.Chitiethoadons
                                     join hh in db.HangHoas on ct.CTHD_HH_ID equals hh.HH_ID
                                     where ct.CTHD_HH_ID == Convert.ToInt32(id)
                                     select ct).SingleOrDefault();
                    if (checkCTHD == null)
                    {
                        DialogResult result;
                        string tenhang = gvSanPham.GetFocusedRowCellValue(colTenHangHoa).ToString();

                        result = XtraMessageBox.Show("Bạn có chắc muốn xóa " + tenhang + " không?", "Cảnh báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                        if (result == DialogResult.OK)
                        {

                            var hanghoa = (from hh in db.HangHoas where hh.HH_ID == int.Parse(id) select hh).Single();
                            db.HangHoas.DeleteOnSubmit(hanghoa);
                            db.SubmitChanges();
                            this.load();
                            XtraMessageBox.Show("Xóa thành công " + tenhang, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                    }
                    else
                    {
                        XtraMessageBox.Show("Hàng hóa này đã có trong chi tiết hóa đơn", "Không thể xóa", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }

        private void gvSanPham_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e)
        {
            e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.NoAction;
        }

        private void gvSanPham_InvalidValueException(object sender, DevExpress.XtraEditors.Controls.InvalidValueExceptionEventArgs e)
        {
            e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.NoAction;
        }

        private void gvSanPham_LostFocus(object sender, EventArgs e)
        {
            //string colHHT = (string)gvSanPham.GetFocusedRowCellValue(colTenHangHoa);
            //if (colHHT == null)
            //{
            //    gvSanPham.SetColumnError(colTenHangHoa, "Tên hàng hóa không được rỗng Vui lòng nhập lại");
            //}
        }

        private void gvSanPham_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            string colTenHH = (string)gvSanPham.GetFocusedRowCellValue(colTenHangHoa);
            if (colTenHH == null)
            {
                e.Valid = false;
                gvSanPham.SetColumnError(colTenHangHoa, "Tên hàng hóa không được rỗng! Vui lòng kiểm tra lại");
            }
        }

        private void gvSanPham_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
        {

        }

      
    }
}